Fix Lenovo UEFI boot loops in Redfish boot interface - #14
Conversation
After deployment, the Redfish virtual media and HTTPS boot interfaces still set BootSourceOverrideTarget to Hdd on Lenovo UEFI nodes. On some firmware this maps to a generic Hard Disk UEFI entry instead of the OS shim, causing infinite boot loops. Skip setting the disk boot device on Lenovo UEFI nodes during deployment, matching the existing PXE and agent deploy behavior. Also route the manage_agent_boot=False path through set_boot_to_disk() so force_persistent_boot_device is honored.
|
Thank you for your contribution! This GitHub repository is just a mirror of https://opendev.org/openstack/ironic, where development really happens. Pull requests proposed on GitHub are automatically closed. If you are interested in pushing this code upstream, please note that OpenStack development uses Gerrit for change proposal and code review. If you have never contributed to OpenStack before, please see: Feel free to reach out to the First Contact SIG by sending an email to the openstack-discuss list with the tag '[First Contact]' in the subject line. To email the mailing list, you must first subscribe which can be done here: |
Summary
manage_agent_boot=Falsepath throughset_boot_to_disk()soforce_persistent_boot_deviceis honoredProblem
After RHCOS deployment, Ironic sets
BootSourceOverrideTarget=HddwithBootSourceOverrideEnabled=Continuousvia Redfish. On some Lenovo UEFI firmware (e.g. SR645 V3 with older XCC),Hddmaps to the generic Hard Disk UEFI entry instead of the OS shim bootloader, causing infinite boot loops.The PXE and agent deploy paths already skip setting disk boot on Lenovo UEFI nodes, but the Redfish boot interface did not — which is the path used by OpenShift/Metal3 Redfish provisioning.
Test plan
RedfishVirtualMediaBootTestCase.test_prepare_instance_local_boot_lenovo_uefiRedfishHTTPBootTestCase.test_prepare_instance_local_boot_lenovo_uefiTestAgentDeploy.test_prepare_instance_boot_no_manage_agent_boot